<?php

/**
 * 常用函数
 */

namespace wtfphp\libs;

class common {
    /**
     * 生成URL地址
     */
    function url($module, $controller, $action) {
        return \wtfphp\router::url($module, $controller, $action);
    }

    /**
     * 数据过滤
     * @param $params   支持数组
     * @param $type     int：整数，string：字符串，text：富文本
     */
    function filter($params, $type = 'string') {
        if (!is_array($params)) {
            switch ($type) {
                case 'int':
                    return intval($params);
                    break;
                case 'string':
                    return preg_replace('/[^@\.\w\s\x{4e00}-\x{9fa5}\x{f900}-\x{fa2d}]/u', '', $params);
                    break;
                /*case 'text':
                    static $_HTMLPurifier = null;
                    if (is_null($_HTMLPurifier)) {
                        require WTFPHP_PATH . 'plugin/htmlpurifier/library/HTMLPurifier.auto.php';
                        $config = HTMLPurifier_Config::createDefault();
                        $_HTMLPurifier = new HTMLPurifier($config);
                    }
                    return $_HTMLPurifier->purify($params);
                    break;*/
                default:
                    return null;
            }
        } else {
            $func = __FUNCTION__;
            foreach ($params as $k => $v) {
                $params[$k] = $this->$func($v, $type);
            }
            return $params;
        }
    }

    /**
     * 单例模式加载类
     * @param $class    类名
     * @param $args     构造参数
     */
    function import($class, $args = array()) {
        static $_obj = array();
        if (empty($_obj[$class])) {
            //反射实例化
            $ref = new \ReflectionClass($class);
            $_obj[$class] = $ref->newInstanceArgs($args);
        }

        return $_obj[$class];
    }
}